#include <functional>
#include <iostream>
#include <set>
#include <vector>
using namespace std;

typedef long long LL;

int main()
{
    int sum = 0;
    int n, k;
    cin >> n >> k;

    int tmp;
    multiset<int, greater<>> ms;

    while (n--)
    {
        cin >> tmp;
        sum += tmp;
        if (tmp % 2 == 0) ms.insert(tmp);
    }


    while (k-- && ms.size())
    {
        auto it = ms.begin();
        tmp = *it / 2;
        sum -= tmp;
        ms.erase(it);
        if (tmp % 2 == 0) ms.insert(tmp);
    }


    cout << sum << endl;

    return 0;
}

//#include <iostream>
//#include <queue>
//
//using namespace std;
//typedef long long LL;
//
//LL n, k;
//priority_queue<LL> heap;
//
//int main()
//{
//    cin >> n >> k;
//    LL sum = 0, x;
//    while (n--)
//    {
//        cin >> x;
//        sum += x;
//        if (x % 2 == 0) heap.push(x);
//    }
//    while (heap.size() && k--)
//    {
//        LL t = heap.top() / 2;
//        heap.pop();
//        sum -= t;
//        if (t % 2 == 0) heap.push(t);
//    }
//    cout << sum << endl;
//    return 0;
//}
